/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo;

/**
 *
 * @author vanesa
 */
public class Sugerir {
    
    int [][] tabSol;
    SolucionTablero9x9 sol9;
    SolucionTablero6x6 sol6;
    
    /**Constructor: Toma el tablero en el estado en el cual se encuentra 
     * y genera la solución del mismo, si éste la tiene.
     * @param tablero "Toma el tablero en el estado actual que se encuentra 
     * la partida en el ese momento."
     */
    public Sugerir(int [][] tablero){
        
        if(tablero.length==9){
            tabSol= new int [9][9];
           for(int i=0;i<6;i++)
               for(int j=0;j<6;j++)
                    tabSol[i][j]=tablero[i][j];
            sol9= new SolucionTablero9x9(tabSol);
            tabSol=sol9.Resolver(0,tabSol );
        }
        else{
           tabSol= new int [6][6];
           for(int i=0;i<6;i++)
               for(int j=0;j<6;j++)
                    tabSol[i][j]=tablero[i][j];           
             sol6= new SolucionTablero6x6(tabSol);
            tabSol=sol6.Resolver(0,tabSol );            
        }
    }
    
    /**SugerirValor: Este método se encarga de sugerir un valor de la solución,
     * siempre y cuando el tablero pasado como parámetro tiene solución.
     * @param tablero "Tablero actual del juego en ese momento."
     * @return int [] "Retorna un arreglo de tres elementos:
     * el primer valor contiene la fila en donde se va a colocar
     * el valor sugerido, el segundo valor es el valor de la columna y
     * el tercer valor es el número sugerido."
     */
    public int[] SugerirValor(int [][] tablero){
        int [] sug= new int [3];
        int i=0;
        boolean esta=false;
        while((i<tabSol.length)&&(!esta)){
            int j=0;
            while((j<tabSol[0].length)&&(!esta)){
                if(tablero[i][j]==0){  
                    sug[0]=i;
                    sug[1]=j;
                    sug[2]=tabSol[i][j];
                    esta=true;
                }
            j++;
            }
        i++;
        }
        return sug;
                
    }
 
}
